<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">

    <ui:composition template="layout.xhtml">        
        <ui:define name="title">
            <h2><a href="#" class="back" onclick="history.go(-1)"/>Cadastrar Folha de Pagamento</h2>
        </ui:define>

        <ui:define name="body">

            <h:form id="folhaPagamentoForm" enctype="multipart/form-data">            
                <p:messages id="messages" closable="true" showDetail="false" autoUpdate="true"  />
                <p>
                    <p:panel id="folhaPagamentoPanel" styleClass="container_24 clearfix" >

                        <p:outputLabel value="Data:" styleClass="grid_3" for="dataCalendar" />
                        <p:calendar id="dataCalendar" value="#{managerCriarFolhaPagamento.folhaPagamento.dataFolhaPagamento}"
                                    showOn="both" locale="pt" yearRange="1900:2100" 
                                    required="true" navigator="true" 
                                    pattern="dd/MM/yyyy" styleClass="grid_9" />
                        <div class="clear"/>

                        <p:outputLabel value="Secretaria:" styleClass="grid_3" for="secretariaInputText">
                            <span class="ui-outputlabel-rfi required">*</span>
                        </p:outputLabel>
                        <p:inputText id="secretariaInputText" styleClass="grid_18" 
                                     readonly="true"
                                     value="#{managerCriarFolhaPagamento.secretaria.nome}" />
                        <div class="smallActionButtons">
                            <p:commandButton icon="ui-icon-circle-plus" oncomplete="dlg.show();"
                                             update="@this" process="@this"/>
                            <p:commandButton icon="ui-icon-trash" update=":folhaPagamentoForm:secretariaInputText"
                                             process="@this" immediate="true" 
                                             actionListener="#{managerCriarFolhaPagamento.removerSecretaria()}"/>
                        </div>
                        <br/>
                    </p:panel>

                    <h2>Funcionário</h2>

                    <p:panel id="funcionarioPanel" styleClass="container_24 clearfix">
                        <p:outputLabel id="personOutputLabel" value="Pessoa:" 
                                       for="personRadioButton"
                                       styleClass="grid_3" style="top: 6px" />
                        <div class="grid_8 divSelectOneMenu">
                            <p:selectOneRadio id="personRadioButton" value="#{managerCriarFolhaPagamento.funcionario.tipoDocumento}" >
                                <f:selectItems value="#{managerCriarFolhaPagamento.tipoDocumento}" />
                                <p:ajax event="change" update=":folhaPagamentoForm:funcionarioPanel, :folhaPagamentoForm:messages" />
                            </p:selectOneRadio>
                        </div>
                        <div class="clear"/>

                        <p:outputLabel value="#{managerCriarFolhaPagamento.pessoaFisica ? 'CPF:' : 'CNPJ:'}" 
                                       styleClass="grid_3" for="cpfCnpjInputMask" >
                            <span class="ui-outputlabel-rfi required">*</span>
                        </p:outputLabel>
                        <p:inputMask id="cpfCnpjInputMask"
                                     value="#{managerCriarFolhaPagamento.pessoaFisica ? managerCriarFolhaPagamento.funcionario.cpf : managerCriarFolhaPagamento.funcionario.cnpj}" 
                                     styleClass="grid_8" autocomplete="false" 
                                     mask="#{managerCriarFolhaPagamento.pessoaFisica ? '999.999.999-99' : '99.999.999/9999-99' }">
                            <p:ajax event="blur" update=":folhaPagamentoForm:funcionarioPanel, :folhaPagamentoForm:messages"
                                    listener="#{managerCriarFolhaPagamento.existeCliente()}" />
                        </p:inputMask>
                        <div class="clear"/>

                        <p:outputLabel value="#{managerCriarFolhaPagamento.pessoaFisica ? 'Nome:' : 'Nome Fantasia:'}" 
                                       styleClass="grid_3 #{managerCriarFolhaPagamento.pessoaFisica ? '' : 'nomeFantasiaLabel'}" 
                                       for="nomeInputText" >
                            <span class="ui-outputlabel-rfi required">*</span>
                        </p:outputLabel>
                        <p:inputText id="nomeInputText" readonly="#{managerCriarFolhaPagamento.funcionario.id ne null}"
                                     value="#{managerCriarFolhaPagamento.pessoaFisica ? managerCriarFolhaPagamento.funcionario.nome : managerCriarFolhaPagamento.funcionario.nomeFantasia}" 
                                     styleClass="grid_20" />
                        <div class="#{managerCriarFolhaPagamento.pessoaFisica ? 'clear' : ''}" />

                        <p:outputLabel value="Nome da Mãe:" styleClass="grid_3" 
                                       for="nomeMaeInputText" rendered="#{managerCriarFolhaPagamento.pessoaFisica}"/>
                        <p:inputText id="nomeMaeInputText" 
                                     value="#{managerCriarFolhaPagamento.funcionario.nomeMae}" 
                                     readonly="#{managerCriarFolhaPagamento.funcionario.id ne null}"
                                     rendered="#{managerCriarFolhaPagamento.pessoaFisica}"
                                     styleClass="grid_20" />
                        <div class="#{managerCriarFolhaPagamento.pessoaFisica ? 'clear' : ''}" />

                        <p:outputLabel value="RG:" styleClass="grid_3" for="rgInputText"
                                       rendered="#{managerCriarFolhaPagamento.pessoaFisica}"/> 
                        <p:inputText id="rgInputText" styleClass="grid_8" 
                                     value="#{managerCriarFolhaPagamento.funcionario.rg}"
                                     readonly="#{managerCriarFolhaPagamento.funcionario.id ne null}"
                                     rendered="#{managerCriarFolhaPagamento.pessoaFisica}"/>

                        <p:outputLabel value="Data de Nascimento:" styleClass="grid_4" 
                                       for="dataNascCalendar" rendered="#{managerCriarFolhaPagamento.pessoaFisica}"/>
                        <p:calendar id="dataNascCalendar" value="#{managerCriarFolhaPagamento.funcionario.dataNascimento}"
                                    showOn="both" locale="pt" yearRange="1900:2100" 
                                    readonly="#{managerCriarFolhaPagamento.funcionario.id ne null}"
                                    rendered="#{managerCriarFolhaPagamento.pessoaFisica and managerCriarFolhaPagamento.funcionario.id eq null}"
                                    navigator="true" pattern="dd/MM/yyyy" styleClass="grid_9" />
                        <div class="grid_9">
                            <p:inputText id="dataNascInputText" value="#{managerCriarFolhaPagamento.dataNascimento()}"
                                         style="width: 90%" readonly="true"
                                         rendered="#{managerCriarFolhaPagamento.pessoaFisica and managerCriarFolhaPagamento.funcionario.id ne null}" />
                        </div>
                        <div class="clear" />
                        <h2>Remuneração</h2>
                        <br/>
                        <p:outputLabel value="Valor:" styleClass="grid_3" for="valorInputText"/>
                        <p:inputText id="valorInputText" styleClass="grid_7" 
                                     onkeypress="jQuery(this).autoNumeric({aSign:'R$ ', aSep: '.', aDec: ','} );"
                                     value="#{managerCriarFolhaPagamento.itemFolhaPagamento.valor}" >
                            <f:convertNumber type="currency" locale="pt,BR"/>
                        </p:inputText>

                        <div class="clear"/><br/>
                        <div class="buttonAction">
                            <p:commandButton value="Adicionar"
                                             process=":folhaPagamentoForm:funcionarioPanel, @this"
                                             actionListener="#{managerCriarFolhaPagamento.adicionarItemFolhaPagamento()}"
                                             update=":folhaPagamentoForm:funcionarioPanel, 
                                             :folhaPagamentoForm:itensPagamentoPanel"
                                             id="adicionarProcessoCommandButton" icon="ui-icon-plus"/>
                        </div>
                    </p:panel>

                    <p:panel id="itensPagamentoPanel" styleClass="container_24 clearfix" >
                        <p:dataTable id="itensPagamentoDataTable" var="item" value="#{managerCriarFolhaPagamento.itensFolhaPagamento}" 
                                     styleClass="grid_24" emptyMessage="Nenhum registro">  
                            <f:facet name="header">
                                Itens da Folha de Pagamento
                            </f:facet>

                            <p:column headerText="Ação" width="50" style="vertical-align: middle">
                                <p:commandButton  styleClass="optionButton" alt="Editar" 
                                                  update=":folhaPagamentoForm:funcionarioPanel, :folhaPagamentoForm:itensPagamentoPanel"
                                                  process="@this" icon="ui-icon-pencil"
                                                  actionListener="#{managerCriarFolhaPagamento.editarItemFolhaPagamento(item)}" />
                                <p:commandButton  styleClass="optionButton" alt="Remover"
                                                  update=":folhaPagamentoForm:itensPagamentoPanel"
                                                  process="@this" icon="ui-icon-trash"
                                                  actionListener="#{managerCriarFolhaPagamento.removerItemFolhaPagamento(item)}" />
                            </p:column>

                            <p:column headerText="Nome" style="vertical-align: middle">
                                #{item.pessoa.nome}
                            </p:column>

                            <p:column headerText="Data" width="300" style="text-align: center; vertical-align: middle">  
                                #{'R$ '.concat(item.valor ne null ? item.valor : '00')}
                            </p:column> 

                        </p:dataTable>
                    </p:panel>

                    <br/>
                    <h2>Anexos</h2>

                    <p:panel id="anexoPanel" styleClass="container_24 clearfix" >

                        <p:fileUpload 
                            mode="advanced"
                            label="Anexar"
                            uploadLabel="Enviar"
                            cancelLabel="Cancelar"
                            fileUploadListener="#{managerCriarFolhaPagamento.handleAnnex}"
                            multiple="true"
                            auto="true"
                            allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
                            dragDropSupport="true"
                            invalidFileMessage="Tipo de arquivo não suportado."
                            invalidSizeMessage="Tamanho do arquivo não é suportado"
                            immediate="true"
                            update=":folhaPagamentoForm:anexosPanel" />

                        <p:panel id="anexosPanel" styleClass="container_24 clearfix arquivosAnexadosPanel" header="Arquivos anexados">

                            <ui:repeat value="#{managerCriarFolhaPagamento.folhaPagamento.anexos}" var="a">
                                <p:panel styleClass="grid_5">
                                    <h:outputLink  
                                        value="#{a.tipo ne 'application/pdf' ? 'viewImage.xhtml':'show'}" title="#{a.tipo}"  target="_blank" >

                                        <div style="width: 100%;" class="grid_4">

                                            <p:graphicImage id="anexoImagem"
                                                            styleClass="image grid_3" rendered="#{a.tipo ne 'application/pdf'}"
                                                            style="margin-left:3%; width: 80px;"
                                                            url="show/?annex=#{a.url.concat('thumbnail.').concat(a.nome)}" />

                                            <p:graphicImage id="anexoPdf"
                                                            styleClass="image grid_3" rendered="#{a.tipo eq 'application/pdf'}"
                                                            style="margin-left:3%; width: 80px;" 
                                                            url="media/images/pdf.jpeg" />

                                            <div class="clear"/>
                                            <p:outputLabel  value="#{managerCriarFolhaPagamento.nomeAnexo(a)}" 
                                                            for="anexoImagem"
                                                            style="margin-left:1%; width: 100px;" rendered="#{a.tipo ne 'application/pdf'}"/>

                                            <p:outputLabel for="anexoPdf"
                                                           value="#{managerCriarFolhaPagamento.nomeAnexoPdf(a)}" 
                                                           style="margin-left:1%; width: 100px;" rendered="#{a.tipo eq 'application/pdf'}"/>
                                        </div>
                                        <f:param name="annex" value="#{a.url.concat(a.nome)}"/>
                                    </h:outputLink>

                                    <p:commandButton id="removeButton" alt="Remover" value="Remover"
                                                     icon="ui-icon-trash" update=":folhaPagamentoForm:funcionarioPanel"
                                                     actionListener="#{managerCriarFolhaPagamento.removerAnexo(a)}" />
                                </p:panel>
                            </ui:repeat>
                        </p:panel>
                        <hr style="margin-top: -10px"/>
                        <div class="clear" />
                    </p:panel>

                    <div class="buttonAction">
                        <p:commandButton value="Salvar" actionListener="#{managerCriarFolhaPagamento.salvar()}"
                                         icon="ui-icon-disk" styleClass="ui-priority-primary" 
                                         update="@form" />
                        <p:button value="Cancelar" icon="ui-icon-circle-close"
                                  href="indexfolhapagamento.xhtml" />
                    </div>
                </p>
            </h:form>

            <h:form id="secretariaDialogForm">

                <p:dialog id="secretariaDialog" header="Secretaria" widgetVar="dlg" modal="false"
                          width="750" resizable="false" height="350">  

                    <p:panel id="secretariaPanel" styleClass="container_24 clearfix">
                        <p:outputLabel value="Nome:" styleClass="grid_3"/>
                        <p:inputText  styleClass="grid_10" value="#{managerCriarFolhaPagamento.secretariaPesquisar.nome}"/>

                        <p:outputLabel value="Sigla:" styleClass="grid_3"/>
                        <p:inputText  styleClass="grid_6" value="#{managerCriarFolhaPagamento.secretariaPesquisar.sgl}"/>
                        <div class="clear" />

                        <p:outputLabel value="Secretario:" styleClass="grid_3"/>
                        <p:inputText  styleClass="grid_19" value="#{managerCriarFolhaPagamento.secretariaPesquisar.nomeSecretario}"/>
                    </p:panel>

                    <div class="buttonAction">
                        <p:commandButton value="Pesquisar" actionListener="#{managerCriarFolhaPagamento.pesquisarSecretaria()}"  
                                         icon="ui-icon-search" styleClass="ui-priority-primary"
                                         process="@all" update="secretariaTable"/>

                    </div>

                    <p:panel id="dlgPanel" styleClass="container_24 clearfix">
                        <p:dataTable id="secretariaTable" var="item" value="#{managerCriarFolhaPagamento.secretarias}" 
                                     styleClass="grid_24" rowIndexVar="rowid" 
                                     style="white-space: pre-wrap;"
                                     rowKey="#{item.id}" rows="5" paginator="true"  
                                     paginatorPosition="bottom" emptyMessage="Nenhum registro">  
                            <f:facet name="header">
                                <p:outputLabel value="Secretaria" />
                            </f:facet>
                            <p:column headerText="Ação" width="10px;" > 
                                <p:commandButton icon="ui-icon-check"
                                                 actionListener="#{managerCriarFolhaPagamento.setarSecretaria(item)}"
                                                 update=":folhaPagamentoForm:secretariaInputText, @form"/>
                            </p:column>
                            <p:column headerText="Nome"> 
                                <p:outputLabel value="#{item.nome}"/>
                            </p:column>
                            <p:column headerText="Secretario">
                                <p:outputLabel value="#{item.nomeSecretario}"/>
                            </p:column>
                            <p:column headerText="Sigla">
                                <p:outputLabel value="#{item.sgl}"/>
                            </p:column>

                        </p:dataTable>
                    </p:panel>
                    <div class="buttonAction">
                        <p:commandButton value="Sair" process="@this" onclick="dlg.hide()" icon="ui-icon-close" />
                    </div>
                </p:dialog>   

            </h:form>

            <script  type="text/javascript" src="media/js/autoNumeric.js"></script>

            <script language="JavaScript" type="text/javascript">
                
                function requiredFuncionario(required){
                    if(required){
                        $('#folhaPagamentoForm\\:funcionarioPanel .ui-outputlabel').each(function() {
                            var id = $(this).attr('for').replace(':', '\\:');
                            /* <![CDATA[ */
                            if ($(this).children('span').hasClass('required') && ($('#' + id).val() == '')) {
                                $(this).addClass('ui-state-error');
                                $('#' + id).addClass('ui-state-error');
                            }
                            /* ]]> */
                        });
                    }else{
                        $('#folhaPagamentoForm\\:funcionarioPanel').children().removeClass('ui-state-error');
                    }
                }

                function requiredSecretaria(required){
                    if(required){
                        $('#folhaPagamentoForm\\:folhaPagamentoPanel .ui-outputlabel').each(function() {
                            var id = $(this).attr('for').replace(':', '\\:');
                            /* <![CDATA[ */
                            if ($(this).children('span').hasClass('required') && ($('#' + id).val() == '')) {
                                $(this).addClass('ui-state-error');
                                $('#' + id).addClass('ui-state-error');
                            }
                            /* ]]> */
                        });
                    }else{
                        $('#folhaPagamentoForm\\:folhaPagamentoPanel').children().removeClass('ui-state-error');
                    }
                }
            </script>
        </ui:define>
    </ui:composition>
</html>


